package com.shujia

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

object Code26ListBuffer {
  def main(args: Array[String]): Unit = {
    /**
     * 可变集合 ListBuffer
     *   和不可变集合的区别在于 可变集合可以添加元素，其他的函数基本一致
     *
     *   不可变集合可以做数据计算得到一个新的List集合
     *
     */
    val ints: ListBuffer[Int] = ListBuffer[Int]()

    ints.append(1,2,3,4)
    ints.insert(2,5,6,7)
    ints.+=(8)
    ints += 9

    val ints2: ListBuffer[Int] = ListBuffer[Int](2,3,4)

    val ints1: ListBuffer[Int] = ints ++ ints2  // ++ 会返回一个新的 ListBuffer 不会改变原先的 ListBuffer
    ints1.foreach(println)

    ints ++= ints2  // ++= 表示对原先的ListBuffer进行数据的修改


    println("___________")
    ints.foreach(println)


    /**
     * 删除数据
     */

    ints.remove(2,2) // 给定开始的下标位置，和要删除的个数
    println(ints)

    ints -= 9  // 删除指定元素
    println(ints)


    /**
     * 修改元素
     */
    ints(0) = 0
    ints.update(1,1)
    println(ints)


    /**
     * 不可变集合转成可变集合
     */

    val list: List[Int] = List(3, 4, 5)

    val buffer: mutable.Buffer[Int] = list.toBuffer
    println(buffer)

    val listBuffer: ListBuffer[Int] = ListBuffer()
    listBuffer ++= list
    println(listBuffer)


    /**
     * 不可变集合List计算
     */

    val list2: List[Int] = List(7, 6, 5)


    val list3 =  8 :: list2
    println(list3)

    val list4 = list ::: list2
    println(list4)


    val list5 = list2.+:(9)
    println(list5)
    println(list2)


  }
}
